A two-stage encoded code is widely used as an error correction code in such a CIRC error correction code in CD (Compact Disc) systems, and therefore, a decoder for decoding that code has been developed.
FIG. 1 shows a block diagram of an encoder for conducting a two-stage encoding. The reference numeral 1 designates an input terminal to which a signal to be encoded is input. The numeral 2 designates a C.sub.2 encoder. The numeral 3 designates an interleaving circuit. The numeral 4 designates a C.sub.1 encoder. The numeral 5 designates an output terminal from which the two-stage encoded code C is output.
In such an encoder, the C.sub.2 code, which is obtained by an (n, k, d) q dimensional encoding, is subjected to an inter-exchange processing by the interleaving circuit 3. Hereupon, n is the code length, k is the information length, and d is the minimum distance of the code. Next, a two-stage encoded code C, which is obtained by further conducting (N, K, D) Q dimensional encoding by the C.sub.1 encoder 4, is output from the output terminal 5. Hereupon, if the q is equal to Q.sup.K , C is a concatenated code, if q is equal to Q, C is a product code, and if q is equal to the Q.sup.k/l (l is a measure of K) the code C is a code of Inoue, Sugiyama and Onishi (A NEW CLASS OF BURST-ERROR-CORRECTING CODES AND IT'S APPLICATION TO PCM TAPE RECORDING SYSTEMS, NTC 1978 Vol. 1, 2). A code which is not a block code, such as a cross-interleaving system two-stage encoded code, may be included in the above-described code C.
FIG. 2 shows a block diagram of a decoder for decoding the two-stage encoded code. The reference numeral 5 designates an input terminal to which a code to be decoded is input. The numeral 6 designates a C.sub.1 decoder. The numeral 7 designates a de-interleaving circuit. The numeral 8 designates a C.sub.2 decoder. The numeral 9 designates an output terminal for a decoded word. The numeral 10 designates an output terminal for a flag.
In such a decoder, the C.sub.1 code is decoded by the C.sub.1 decoder 6, and a flag is output in accordance with the state of the decoding. In the de-interleaving circuit 7, the C.sub.2 code is restored to the state where the code is generated, and it is decoded by the C.sub.2 decoder 8. When an error correction is possible this error correction is carried out to output a decoded word to the output terminal 9, and when the error correction is impossible a flag is output to the output terminal 10.
As a conventional decoding method, there is an error correction method shown in Japanese Laid-Open Patent Publication No. Sho. 58-29237. In this method, corrections of one-word errors and two word errors are conducted at the time of decoding of the C.sub.1 code, and the fact that more than three words have errors is detected at the decoding of the C.sub.1 code, and three pointers respectively indicating the correction of one-word errors, the correction of two-word errors and the detection of more than three-word errors are added, and thereafter, the decoding of the C.sub.2 code is conducted. A flowchart thereof is shown in FIG. 3:
The number of the three kinds of pointers are designated by N.sub.1, N.sub.2, and N.sub.3, and the decoding is conducted in accordance with the states of the error and the pointer. For example, if the C.sub.1 code is set as the (32, 28, 5) RS (Reed Solomon) code on the Galois Field (2.sup.8) and the C.sub.2 code is set as the (28, 24, 5) RS code, pointers are added to the whole of the C.sub.2 code when N.sub.3 is smaller than or equal to Z.sub.5, and when the obtained error location i is not the error location of the C.sub.2 code in a case of one-word error as shown in the flowchart of FIG. 3. When N.sub.3 is larger than Z.sub.5, the pointer of the C.sub.1 code is copied. When the error location i is the error location of the C.sub.2 code, and when a pointer is located at i, one word is corrected when N.sub.3 .ltoreq.Z.sub.2 , and a pointer is copied when N.sub.3 &gt;Z.sub.2. When a pointer is not located at i, one word is corrected when N.sub.3 .ltoreq.Z.sub.3, a pointer is added to the whole of the C.sub.2 code when N.sub.3 &gt;Z.sub.3 and N.sub.3 &gt;Z.sub.4, and a pointer is copied when N.sub.3 &gt;Z.sub.3 and N.sub.3 &gt;N.sub.4. Furthermore, although it is not shown in FIG. 3, N.sub.2 may be considered in the judgment of N.sub.3 .ltoreq. Z.sub.2, and may be used in a smaller weight than N.sub.3.
Under such a decoding method, however, the capability of correction of all the errors up to the number [dD/2] against the combined distance dD=25 of the C.sub.1 and C.sub.2 codes is not assured. Furthermore, the capability of detection of all errors less than the number (dD-[dD/2]).
As other prior art, there is a text "Concatenated Codes" G. David Forney, Jr. The MIT PRESS.